//
//  SYStatusViewModel.swift
//  SYWeibo
//
//  Created by Eric on 16/7/24.
//  Copyright © 2016年 Eric. All rights reserved.
//

import UIKit
// 该viewModel 为cell （原创微博转发微博和底部视图）服务
class SYStatusViewModel: NSObject{
    
    //定义一个属性
    var status: SYStatus?
    //微博认证用户图片
    var avatarImage: UIImage?
    //处理会员等级图片
    var memberImage: UIImage?
    //微博来源处理富文本
    var sourceAttr: NSMutableAttributedString?
    //转发数
    var repostsCountStr: String?
    //评论数
    var commentsCount: String?
    //表态数
    var attitudesCountStr: String?
   // 微博时间(只读属性  计算型)
    var sinaTimerStr: String?{
    return NSDate.sinaDate(status?.created_at ?? "")?.sinaDescriptionStr
    }
   
    //重载构造函数
    init(status:SYStatus) {
        super.init()
        self.status = status
        //在viewModel中调用重载构造函数初始化的时候要对avatarImage&memberImage 赋值
        self.avatarImage = getAvataImage(status.user?.verified)
        self.memberImage = getMemberImage(status.user?.mbrank)
        self.sourceAttr = getSourceStr(status.source)
        self.repostsCountStr = getSinaCount(status.reposts_count, title: "转发")
        self.commentsCount = getSinaCount(status.comments_count, title: "评论")
        self.attitudesCountStr = getSinaCount(status.attitudes_count, title: "赞")
       
    }

}


/*
- 转发 评论 赞 业务逻辑处理
- 如果count <= 0  显示 转发 评论 赞 例如 0  显示 转发 评论 赞
- 如果count > 0
- 如果 count < 10000  数据是多少显示多少  例如  8888  显示 8888
- 如果 count >= 10000  显示 x.x万       例如 12000  显示 1.2 万
- 注意 如果 count%10000 = 0  显示  例如 20000 显示 2万
*/
extension SYStatusViewModel{
    func getSinaCount(count: Int, title: String)-> String{
        //count <= 0
        if count <= 0{
        return title
        }else{
            // count > 0
            // 小于10000
            if count < 10000{
            return "\(count)"
            }else{
            let sinaCount = CGFloat(count/1000)/10
            //字符串拼接
                var sinaCountStr = "\(sinaCount)万"
                //如果字符串为包含.0
                if sinaCountStr.containsString(".0"){
                //字符串替换
                sinaCountStr = sinaCountStr.stringByReplacingOccurrencesOfString(".0", withString: "")
                
                }
                return sinaCountStr
            }
        }

    }

}

// MARK: 数据处理
extension SYStatusViewModel{
    // 处理微博认证用户图片/// 认证类型 -1：没有认证，1，认证用户，2,3,5: 企业认证，220: 达人
    func getAvataImage(verified: Int?) -> UIImage?{
    //判断是否为nil
        guard let ver = verified else{
            return nil
        }
        switch ver {
        case 1:
            return UIImage(named: "avatar_vip")
        case 2,3,5:
            return UIImage(named: "avatar_enterprise_vip")
        case 220:
            return UIImage(named: "avatar_grassroot")
        default:
            return UIImage(named: "avatar_vgirl")
        }
    
    }
    
    //处理会员等级图片   // 1-6级
    func getMemberImage(mbrank: Int?) -> UIImage?{
    //判断是否为nil
        guard let mbr = mbrank else{
        
        return nil
        }
        if mbr > 0 && mbr < 7 {
        return UIImage(named: "common_icon_membership_level\(mbr)")

        }
    return UIImage(named: "common_icon_membership")
    }


}
// 当前认为是MVVM开发模式
extension SYStatusViewModel{
    // 格式 来自 xxxx
    func getSourceStr(source: String?)-> NSMutableAttributedString{
        // 判断他是否为nil 而且是否保存">
        guard let s = source where s.containsString("\">") else{
            let str = "上海三期微博"
            return getSourceAttr(str)
        }
        // 起始位置和结束位置
        let startRange = s.rangeOfString("\">")!
        let endRange = s.rangeOfString("</")!
        
        
        // 字符串截取
        let result = s.substringWithRange(startRange.endIndex..<endRange.startIndex)
        return getSourceAttr(result)
    }
    // 处理显示微博来源的富文本
    func getSourceAttr(result: String) -> NSMutableAttributedString {
        // 最终显示格式
        let name = "来自 " + result
        // 得到range
        let range = (name as NSString).rangeOfString("来自")
        
        // 创建一个可变富文本
        let attr = NSMutableAttributedString(string: name)
        // 设置属性
        attr.addAttributes([NSForegroundColorAttributeName: UIColor.grayColor()], range: range)
        
        return attr
    }
}


















